package model.goods;



import dao.read.goods.GoodsNewsTypeReadMapper;
import dao.write.goods.GoodsNewsTypeWriteMapper;
import entity.goods.dto.GoodsNewsTypeAddDTO;
import entity.goods.dto.GoodsNewsTypeUpdateDTO;
import entity.goods.example.GoodsNewsTypeExample;
import entity.goods.pojo.GoodsNewsType;
import response.PagerInfo;

import javax.annotation.Resource;
import java.util.List;

/**
 * 新闻类型model
 */

//@Component
//@Slf4j
public class GoodsNewsTypeModel {

    @Resource
    private GoodsNewsTypeReadMapper goodsNewsTypeReadMapper;
    @Resource
    private GoodsNewsTypeWriteMapper goodsNewsTypeWriteMapper;



    /**
     * 新增新闻类型
     *
     * @param goodsNewsTypeAddDTO
     * @return
     */
    public Integer saveGoodsNewsType(GoodsNewsTypeAddDTO goodsNewsTypeAddDTO) throws Exception {

        //新增新闻类型
        GoodsNewsType insertOne = new GoodsNewsType();
        //PropertyUtils.copyProperties(insertOne, goodsNewsTypeAddDTO);
        insertOne.setNewsTypeName(goodsNewsTypeAddDTO.getNewsTypeName());
        insertOne.setSort(goodsNewsTypeAddDTO.getSort());

        int count = goodsNewsTypeWriteMapper.insert(insertOne);
        if (count == 0) {
            //throw new MallException("添加类型失败，请重试");
        }
        return count;
    }



    /**
     * 根据newsTypeId批量删除新闻类型
     *
     * @param newsTypeIds
     * @return
     */
    //@Transactional(rollbackFor = Exception.class)
    public void delGoodsNewsTypeByIds(String newsTypeIds) {
       /* if (StringUtils.isEmpty(newsTypeIds)) {
            throw new MallException("请选择要删除的数据");
        }*/
        //组装新闻类型删除的条件
        GoodsNewsTypeExample example = new GoodsNewsTypeExample();
        example.setNewsTypeIdIn(newsTypeIds);
        int count = goodsNewsTypeWriteMapper.deleteByExample(example);
        if (count == 0) {
            //log.error("根据newsTypeIds:" + newsTypeIds + "批量删除新闻类型失败");
            //throw new MallException("删除新闻类型失败,请重试!");
        }
    }



    /**
     * 根据GoodsNewsTypeUpdateDTO更新类型
     *
     * @param goodsNewsTypeUpdateDTO
     * @return
     */
    //@Transactional(rollbackFor = Exception.class)
    public Integer updateGoodsNewsType(GoodsNewsTypeUpdateDTO goodsNewsTypeUpdateDTO) throws Exception {

        //修改新闻类型
        GoodsNewsType updateOne = new GoodsNewsType();
        //PropertyUtils.copyProperties(updateOne, goodsNewsTypeUpdateDTO);
        updateOne.setNewsTypeId(goodsNewsTypeUpdateDTO.getNewsTypeId());
        updateOne.setNewsTypeName(goodsNewsTypeUpdateDTO.getNewsTypeName());
        updateOne.setSort(goodsNewsTypeUpdateDTO.getSort());
        int count = goodsNewsTypeWriteMapper.updateByPrimaryKeySelective(updateOne);
        if (count == 0) {
            //log.error("根据newsTypeId：" + goodsNewsTypeUpdateDTO.getNewsTypeId() + "更新新闻类型失败");
            //throw new MallException("更新新闻类型失败,请重试");
        }
        return count;
    }

    /**
     * 根据newsTypeId获取新闻类型
     *
     * @param newsTypeId newsTypeId
     * @return
     */
    public GoodsNewsType getGoodsNewsTypeById(Integer newsTypeId) {
        return goodsNewsTypeReadMapper.getByPrimaryKey(newsTypeId);
    }


    /**
     * 根据条件获取新闻类型列表
     *
     * @param example 查询条件信息
     * @param pager   分页信息
     * @return
     */
    public List<GoodsNewsType> getGoodsNewsTypeList(GoodsNewsTypeExample example, PagerInfo pager) {
        List<GoodsNewsType> goodsNewsTypeList;
        if (pager != null) {
            pager.setRowsCount(goodsNewsTypeReadMapper.countByExample(example));
            goodsNewsTypeList = goodsNewsTypeReadMapper.listPageByExample(example,pager.getStart(),pager.getPageSize());
        } else {
            goodsNewsTypeList = goodsNewsTypeReadMapper.listByExample(example);
        }
        return goodsNewsTypeList;
    }


}
